From 3d140ec0b834e3764e8abe9d33989b76544f8ee9 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 6 Aug 2025 12:28:45 +0200 Subject: [PATCH] examples: sync scripts with openwrt Signed-off-by: Felix Fietkau --- examples/wireless-device.uc | 14 ++++++++++--- examples/wireless.uc | 42 +++++++++++++++++++++++++++++++++++-- 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/examples/wireless-device.uc b/examples/wireless-device.uc index b0faef1..22f5ee5 100644 --- a/examples/wireless-device.uc +++ b/examples/wireless-device.uc @@ -36,6 +36,8 @@ function handle_link(dev, data, up) (data.type == "vif" && config.mode == "ap"); let dev_data = { + external: 2, + check_vlan: false, isolate: !!config.bridge_isolate, wireless: true, wireless_ap: ap, @@ -389,11 +391,14 @@ function update(data) function start() { - if (this.delete || this.data.config.disabled) + if (this.delete) return; this.dbg("start, state=" + this.state); this.autostart = true; + if (this.data.config.disabled) + return; + wdev_reset(this); if (this.state != "down") @@ -425,7 +430,10 @@ function check() return; wdev_config_init(this); - this.setup(); + if (this.data.config.disabled) + this.teardown(); + else + this.setup(); } function wdev_mark_up(wdev) @@ -530,7 +538,7 @@ function hotplug(name, add) data.type != "vif" && data.type != "vlan") continue; - handle_link(dev, data, up); + handle_link(dev, data, add); } } diff --git a/examples/wireless.uc b/examples/wireless.uc index b63ec23..956ca54 100644 --- a/examples/wireless.uc +++ b/examples/wireless.uc @@ -183,6 +183,41 @@ function config_init(uci) } let udata = ubus.call({ + object: "service", + method: "get_data", + data: { + type: "wifi-device" + }, + }); + for (let svcname, svc in udata) { + for (let typename, data in svc) { + for (let radio, config in data) { + if (type(config) != "object") + continue; + + let dev = devices[radio]; + if (dev) { + dev.config = { ...dev.config, ...config }; + continue; + } + + let handler = wireless.handlers[config.type]; + if (!handler) + continue; + + dev = devices[radio] = { + name, + config, + + vif: [], + }; + handlers[radio] = handler; + } + } + } + + + udata = ubus.call({ object: "service", method: "get_data", data: { @@ -193,6 +228,9 @@ function config_init(uci) for (let svcname, svc in udata) { for (let typename, data in svc) { for (let radio, vifs in data) { + if (type(vifs) != "object") + continue; + for (let name, vif in vifs) { let devs = vif.device; if (type(devs) != "array") @@ -241,11 +279,11 @@ function check_interfaces() dev.check(); } -function hotplug(name, add) +function hotplug(ifname, add) { for (let name, dev in wireless.devices) if (dev.autostart) - dev.hotplug(name, add); + dev.hotplug(ifname, add); } const network_config_attr = { -- 2.30.2